<?php 

/**
 * @file Pagina que contem as funcoes que constroem a pagina de gerencia de ponto de um aluno.
 */

//
// <begin> Funcoes de visualizacao do ponto do aluno </begin>
//

/**
 * titulo da pagina de ponto
 */
function frequencia_ponto_title($aluno_id) {
	$aluno = DAO::daoFactory(Aluno::TYPE)->get_field('id', $aluno_id, 'nome');
	return $aluno->nome;
}

/**
 * 
 */
function frequencia_ponto_view($aluno_id) {
	$dias = DAO::daoFactory('frequencia')->listPonto($aluno_id);	
	
	$content = array('view_mode' => 'tweaky');
	$isHomologado = false;
	
	foreach ($dias as $dia) {
		$rows[] = array(
				'data' => array(
						'Dia' 				=> t(data_por_extenso($dia->dia) ),
						'Ocorrencia' 	=> isDiaUtil($dia->dia) ? t($dia->frequencia == 0 ? "Falta" : "Presente") : '',
						'Homologado'  => isDiaUtil($dia->dia) ? $dia->homologado == 1 ? 'homologado' : 'não homologado' : '',
						'Mudar'     	=> isDiaUtil($dia->dia) ? 
														 		($dia->frequencia == 1 
														 		? l('Inserir falta', 'frequencia/ponto/falta/'.$dia->dia.'/'.$aluno_id) 
														 		: l('Reverter falta', 'frequencia/ponto/presenca/'.$dia->dia.'/'.$aluno_id) )
														 : ''
				)
					
		);
		
		// verifica se o ponto está homologado
		$isHomologado = $dia->homologado == 1 ? true : false;
	}
	
	if ($rows != null) {
		$content['entity_table'] = array(
				'#theme' 	=> 'table',
				'#rows' 	=> $rows,
				'#header'	=> array(t('Dia'), t('Ocorrência'), t(''), t(''))
		);
		
		// se nao estiver o ponto homologado, aparece a opcao para homologacao
		if (!$isHomologado) {
			$content['homologar'] = array(
					'#type'   => 'item',
					'#markup' => l('Homologar', 'frequencia/ponto/homologar/'. $aluno_id . '/' . date('m') . "/" . date('Y')),
			);
			$content['homologar-aviso'] = array(
					'#type'   => 'item',
					'#markup' => t('* Atenção: Ao homologar não será possível reverter.'),
			);
		}
		
	}
	
	return $content;
}

//
// <end> Funcoes de visualizacao do ponto do aluno </end>
//

/**
 * homologa o mes
 */
function frequencia_ponto_homologar($aluno_id, $mes, $ano) {
	$mes = intval(date('m'));
	$ano = intval(date('Y')); 
	
	$query   = 
			"update frequencia set homologado = 1 where aluno_id = " . $aluno_id 
			." and dia >= ". getInicioMes($mes, $ano) 
			." and dia <= ". getFimMes($mes, $ano) 		.";";
	
	db_query($query);
	
	// cria o calendario do proximo mes
	$proximo_mes = $mes == 12 ? 1 : ++$mes;
	frequencia_gerar_calendario_proximo_mes($aluno_id, $proximo_mes);
	
	drupal_goto('frequencia/ponto/' . $aluno_id);
}

//
// <begin> Funcoes de alteracao da ocorrencia do dia do aluno </begin> 
//

/**
 * registra uma falta no ponto do aluno
 */
function frequencia_ponto_falta($dia, $aluno_id) {
	frequencia_ponto_alterna($dia, 0, $aluno_id);
}

/**
 * registra presenca no ponto do aluno
 */
function frequencia_ponto_presenca($dia, $aluno_id) {
	frequencia_ponto_alterna($dia, 1, $aluno_id);
}

/**
 * 
 */
function frequencia_ponto_alterna($dia, $ocorrencia, $aluno_id) {
	db_query("update frequencia set frequencia = ". $ocorrencia ." where aluno_id = ". $aluno_id. " and dia = ". $dia)
		->execute();
	drupal_goto('frequencia/ponto/'.$aluno_id);
}

//
// <end> Funcoes de alteracao da ocorrencia do dia do aluno </end> 
//

//
// <begin> Funcoes especificas do usuario PROGEST que definem a data limite
// para a homologacao do ponto de um aluno no mes </begin>
//

/** */
function frequencia_validade_add_form($form, &$form_state) {
	$form['vencimento'] = array (
			'#type' => 'value',
			'#value' => new stdClass(),
	);

	// Dados do estudante
	$form['dados_validade'] = array (
			'#type' => 'fieldset',
			'#title' => t('Configure a data de vencimento da homologação de ponto do mês'),
	);

	$form['dados_validade']['dia'] = array (
			'#type' => 'date_popup',
  		'#title' => t('Vencimento'),
			'#date_format' => 'd/m/Y',
  		'#date_year_range' => '-10:+10',
	);

	$form['submit'] = array(
			'#type' 	=> 'submit',
			'#value' 	=> t('Cadastrar'),
	);

	return $form;
}

/** */
function frequencia_validade_add_form_submit($form, &$form_state) {
	$vencimento = $form_state['values']['vencimento'];
	$vencimento->dia = $form_state['values']['dia'];

	drupal_write_record('vencimento_homologacao', $vencimento);
	$form_state['redirect'] = 'frequencia/';
}

/**
 * Funcao chamada quando se é necessário gerar o calendario do mes para o
 * acompanhamento da frequencia do aluno.
 */
function frequencia_gerar_calendario_proximo_mes($aluno_id, $mes = NULL) {
	if ($mes == NULL) {
		$mes = intval(date('m'));
	}
	
	$ano = intval(date('Y')); 
	
	for($i = 1; $i <= cal_days_in_month(CAL_GREGORIAN, $mes, $ano); $i++) {
		$frequencia = new stdClass();
		$frequencia->aluno_id = $aluno_id;
		$frequencia->frequencia = 1;
		$frequencia->dia = mktime(0, 0, 0, $mes, $i, $ano);
		$frequencia->homologado = 0;
		
		drupal_write_record('frequencia', $frequencia);
	}
}

//
// <end> Funcoes especificas do usuario PROGEST que definem a data limite
// para a homologacao do ponto de um aluno no mes </end>
//

